home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_qt.idb / usr / freeware / include / Qt / qlistview.h.z / qlistview.h
Encoding:
C/C++ Source or Header  |  1998-10-28  |  8.2 KB  |  305 lines

  1. /****************************************************************************
  2. ** $Id: qlistview.h,v 2.53 1998/07/03 00:09:51 hanord Exp $
  3. **
  4. ** Definition of QListView widget class
  5. **
  6. ** Created : 970809
  7. **
  8. ** Copyright (C) 1992-1998 Troll Tech AS.  All rights reserved.
  9. **
  10. ** This file is part of Qt Free Edition, version 1.40.
  11. **
  12. ** See the file LICENSE included in the distribution for the usage
  13. ** and distribution terms, or http://www.troll.no/free-license.html.
  14. **
  15. ** IMPORTANT NOTE: You may NOT copy this file or any part of it into
  16. ** your own programs or libraries.
  17. **
  18. ** Please see http://www.troll.no/pricing.html for information about 
  19. ** Qt Professional Edition, which is this same library but with a
  20. ** license which allows creation of commercial/proprietary software.
  21. **
  22. *****************************************************************************/
  23.  
  24. #ifndef QLISTVIEW_H
  25. #define QLISTVIEW_H
  26.  
  27. class QStrList;
  28. class QPixmap;
  29. class QFont;
  30. class QHeader;
  31.  
  32. class QListView;
  33. struct QListViewPrivate;
  34.  
  35.  
  36. #ifndef QT_H
  37. #include "qscrollview.h"
  38. #endif // QT_H
  39.  
  40.  
  41. class QListViewItem
  42. {
  43. public:
  44.     QListViewItem( QListView * parent );
  45.     QListViewItem( QListViewItem * parent );
  46.     QListViewItem( QListView * parent,
  47.            const char *,     const char * = 0,
  48.            const char * = 0, const char * = 0,
  49.            const char * = 0, const char * = 0,
  50.            const char * = 0, const char * = 0 );
  51.     QListViewItem( QListViewItem * parent,
  52.            const char *,     const char * = 0,
  53.            const char * = 0, const char * = 0,
  54.            const char * = 0, const char * = 0,
  55.            const char * = 0, const char * = 0 );
  56.     virtual ~QListViewItem();
  57.  
  58.     virtual void insertItem( QListViewItem * );
  59.     virtual void removeItem( QListViewItem * );
  60.  
  61.     int height() const { return ownHeight; }
  62.     virtual void invalidateHeight();
  63.     int totalHeight() const;
  64.     virtual int width( const QFontMetrics&,
  65.                const QListView*, int column) const;
  66.     void widthChanged(int column=-1) const;
  67.     int depth() const;
  68.  
  69.     virtual void setText( int, const char * );
  70.     virtual const char * text( int ) const;
  71.  
  72.     virtual void setPixmap( int, const QPixmap & );
  73.     virtual const QPixmap * pixmap( int ) const;
  74.  
  75.     virtual const char * key( int, bool ) const;
  76.     virtual void sortChildItems( int, bool );
  77.  
  78.     int childCount() const { return nChildren; }
  79.  
  80.     bool isOpen() const { return open && nChildren>0; } // ###
  81.     virtual void setOpen( bool );
  82.     virtual void setup();
  83.  
  84.     virtual void setSelected( bool );
  85.     bool isSelected() const { return selected; }
  86.  
  87.     virtual void paintCell( QPainter *,  const QColorGroup & cg,
  88.                 int column, int width, int alignment );
  89.     virtual void paintBranches( QPainter * p, const QColorGroup & cg,
  90.                 int w, int y, int h, GUIStyle s );
  91.     virtual void paintFocus( QPainter *, const QColorGroup & cg,
  92.                  const QRect & r );
  93.  
  94.     QListViewItem * firstChild() const;
  95.     QListViewItem * nextSibling() const { return siblingItem; }
  96.     QListViewItem * parent() const;
  97.  
  98.     QListViewItem * itemAbove();
  99.     QListViewItem * itemBelow();
  100.  
  101.     QListView *listView() const;
  102.  
  103.     virtual void setSelectable( bool enable );
  104.     bool isSelectable() const { return selectable; }
  105.  
  106.     virtual void setExpandable( bool );
  107.     bool isExpandable() { return expandable; }
  108.  
  109.     void repaint() const;
  110.  
  111. protected:
  112.     virtual void enforceSortOrder() const;
  113.     virtual void setHeight( int );
  114.     virtual void activate();
  115.  
  116. private:
  117.     void init();
  118.     int ownHeight;
  119.     int maybeTotalHeight;
  120.     int nChildren;
  121.  
  122.     uint lsc: 14;
  123.     uint lso: 1;
  124.     uint open : 1;
  125.     uint selected : 1;
  126.     uint selectable: 1;
  127.     uint configured: 1;
  128.     uint expandable: 1;
  129.     uint is_root: 1;
  130.  
  131.     QListViewItem * parentItem;
  132.     QListViewItem * siblingItem;
  133.     QListViewItem * childItem;
  134.  
  135.     void * columns;
  136.  
  137.     friend class QListView;
  138. };
  139.  
  140.  
  141. class QListView: public QScrollView
  142. {
  143.     Q_OBJECT
  144. public:
  145.     QListView( QWidget * parent = 0, const char * name = 0 );
  146.     ~QListView();
  147.  
  148.     int treeStepSize() const;
  149.     virtual void setTreeStepSize( int );
  150.  
  151.     virtual void insertItem( QListViewItem * );
  152.     virtual void clear();
  153.  
  154.     QHeader * header() const;
  155.  
  156.     virtual int addColumn( const char * label, int size = -1);
  157.     virtual void setColumnText( int column, const char * label );
  158.     const char* columnText( int column ) const;
  159.     virtual void setColumnWidth( int column, int width );
  160.     int columnWidth( int column ) const;
  161.     enum WidthMode { Manual, Maximum };
  162.     virtual void setColumnWidthMode( int column, WidthMode );
  163.     WidthMode columnWidthMode( int column ) const;
  164.  
  165.     virtual void setColumnAlignment( int, int );
  166.     int columnAlignment( int ) const;
  167.  
  168.     void show();
  169.  
  170.     QListViewItem * itemAt( const QPoint & screenPos ) const;
  171.     QRect itemRect( const QListViewItem * ) const;
  172.     int itemPos( const QListViewItem * );
  173.  
  174.     void ensureItemVisible( const QListViewItem * );
  175.  
  176.     void repaintItem( const QListViewItem * ) const;
  177.  
  178.     virtual void setMultiSelection( bool enable );
  179.     bool isMultiSelection() const;
  180.     virtual void setSelected( QListViewItem *, bool );
  181.     bool isSelected( QListViewItem * ) const;
  182.     virtual void setOpen( QListViewItem *, bool );
  183.     bool isOpen( QListViewItem * ) const;
  184.  
  185.     virtual void setCurrentItem( QListViewItem * );
  186.     QListViewItem * currentItem() const;
  187.  
  188.     QListViewItem * firstChild() const;
  189.  
  190.     virtual void setAllColumnsShowFocus( bool );
  191.     bool allColumnsShowFocus() const;
  192.  
  193.     virtual void setItemMargin( int );
  194.     int itemMargin() const;
  195.  
  196.     virtual void setRootIsDecorated( bool );
  197.     bool rootIsDecorated() const;
  198.  
  199.     virtual void setSorting( int column, bool increasing = TRUE );
  200.  
  201.     void setStyle( GUIStyle );
  202.     void setFont( const QFont & );
  203.     void setPalette( const QPalette & );
  204.  
  205.     bool eventFilter( QObject * o, QEvent * );
  206.  
  207.     QSize sizeHint() const;
  208.  
  209. public slots:
  210.     void triggerUpdate();
  211.  
  212. signals:
  213.     void selectionChanged();
  214.     void selectionChanged( QListViewItem * );
  215.     void currentChanged( QListViewItem * );
  216.  
  217.     void doubleClicked( QListViewItem * );
  218.     void returnPressed( QListViewItem * );
  219.     void rightButtonClicked( QListViewItem *, const QPoint&, int );
  220.     void rightButtonPressed( QListViewItem *, const QPoint&, int );
  221.  
  222. protected:
  223.     void mousePressEvent( QMouseEvent * e );
  224.     void mouseReleaseEvent( QMouseEvent * e );
  225.     void mouseMoveEvent( QMouseEvent * e );
  226.     void mouseDoubleClickEvent( QMouseEvent * e );
  227.  
  228.     void focusInEvent( QFocusEvent * e );
  229.     void focusOutEvent( QFocusEvent * e );
  230.  
  231.     void keyPressEvent( QKeyEvent *e );
  232.  
  233.     void resizeEvent( QResizeEvent *e );
  234.  
  235.     void drawContentsOffset( QPainter *, int ox, int oy,
  236.                  int cx, int cy, int cw, int ch );
  237.  
  238.     virtual void paintEmptyArea( QPainter *, const QRect & );
  239.     void enabledChange( bool );
  240.  
  241. protected slots:
  242.     void updateContents();
  243.  
  244. private slots:
  245.     void changeSortColumn( int );
  246.     void updateDirtyItems();
  247.     void handleSizeChange( int, int, int );
  248.  
  249. private:
  250.     void updateGeometries();
  251.     void buildDrawableList() const;
  252.     void reconfigureItems();
  253.     void widthChanged(const QListViewItem*, int c);
  254.  
  255.     QListViewPrivate * d;
  256.  
  257.     friend class QListViewItem;
  258. };
  259.  
  260.  
  261. class QCheckListItem : public QListViewItem
  262. {
  263. public:
  264.     enum Type { RadioButton, CheckBox, Controller };
  265.  
  266.     QCheckListItem( QCheckListItem *parent, const char *text,
  267.             Type = Controller );
  268.     QCheckListItem( QListView *parent, const char *text,
  269.             Type = Controller );
  270.     QCheckListItem( QListViewItem *parent, const char *text,
  271.             const QPixmap & );
  272.     QCheckListItem( QListView *parent, const char *text,
  273.             const QPixmap & );
  274.  
  275.     void paintCell( QPainter *,  const QColorGroup & cg,
  276.             int column, int width, int alignment );
  277.     int width( const QFontMetrics&, const QListView*, int column) const;
  278.     void setup();
  279.  
  280.     void setOn( bool );
  281.     bool isOn() const { return on; }
  282.     Type type() const { return myType; }
  283.     const char *text() const { return QListViewItem::text( 0 ); }
  284.     const char *text( int n ) const { return QListViewItem::text( n ); }
  285.  
  286. protected:
  287.     void paintBranches( QPainter * p, const QColorGroup & cg,
  288.             int w, int y, int h, GUIStyle s );
  289.  
  290.     void activate();
  291.     void turnOffChild();
  292.     virtual void stateChange( bool );
  293.  
  294. private:
  295.     void init();
  296.     Type myType;
  297.     bool on;
  298.     QCheckListItem *exclusive;
  299.  
  300.     void *reserved;
  301. };
  302.  
  303.  
  304. #endif // QLISTVIEW_H
  305.